/**
 * 节流代码的实现
 */

// 使用时间戳实现
function throttleTime(fn,delay){//传入一个回调函数和延迟时间
	let last = 0  ; //定义上一次的执行时间戳
	return function(...args){ //返回一个接受参数的函数(...args表示不知道函数需要什么参数)
		//返回一个函数
		let now = Date.now() // 获取当前时间戳
		if(now - last >= delay){
			last = now //将上一次执行时间设置为当前执行的时间
			fn.apply(this, args) // 立即执行传入的fn并且将该参数传递给fn
		}
	}
}

//使用定时器实现
function throttleSetTimeout(fn,delay){
    let time = null
    return function(...args){
        if(time){//定时器不为空,说明这个周期内有函数在运行
            return 
        }
        time = setTimeout(() => { //首次不执行
            time=null;   
            fn.apply(this,args)
        }, delay);

    }
}


function add(){
    console.log(111)
}


const tadd=throttleTime(add,5000)
const tadd2 = throttleSetTimeout(add,5000)
tadd()
tadd()
tadd()
tadd2()
tadd2()
